package com.yunxin.core.application.service;

import com.yunxin.core.application.command.order.*;
import com.yunxin.core.application.dto.order.AllocationUserApplyOrderDTO;
import com.yunxin.core.application.dto.order.CreateUserApplyOrderDTO;
import com.yunxin.core.application.dto.order.CreateUserUvOrderDTO;

/**
 * @author zero°
 * @since 2023-07-12
 */
public interface OrderApplicationGatewayService {

    /**
     * 生成用户申请订单
     * @param command command
     * @param clientIp clientIp
     * @return CreateUserApplyOrderDTO
     */
    CreateUserApplyOrderDTO createUserApplyOrder(CreateUserApplyOrderCommand command, String clientIp);


    /**
     * 分配用户申请订单
     * @param command command
     * @param clientIp clientIp
     * @return AllocationUserApplyOrderDTO
     */
    AllocationUserApplyOrderDTO allocationUserApplyOrder(AllocationUserApplyOrderCommand command, String clientIp);

    /**
     * 更新分配订单用户微信号
     * @param command command
     * @return boolean
     */
    boolean updateAllocationOrderWechat(UpdateAllocationOrderWechatCommand command);

    /**
     * 更新分配订单企业微信
     * @param command command
     * @return boolean
     */
    boolean updateAllocationOrderEnterpriseWechat(UpdateAllocationOrderEnterpriseWechatCommand command);
}
